å ç¢ã§ä¿¡é Œæ§ã®é«ãUIãæ§ç¯ããããã®ãã¹ãããã·ã§ãããã¹ããšã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãæŠç¥ãç¶²çŸ ããReactã³ã³ããŒãã³ããã¹ãã®å æ¬çãªã¬ã€ãã
Reactã³ã³ããŒãã³ããã¹ãïŒã¹ãããã·ã§ãããã¹ããšã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãããã¹ã¿ãŒãã
ææ°ã®Webéçºã®äžçã§ã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ïŒUIïŒã®ä¿¡é Œæ§ãšå ç¢æ§ã確ä¿ããããšãæãéèŠã§ãã UIã®æ§ç¯ã«äººæ°ã®JavaScriptã©ã€ãã©ãªã§ããReactã¯ãéçºè ã«ã³ã³ããŒãã³ãããŒã¹ã®ã¢ãŒããã¯ãã£ãæäŸããŸãã ãããã®ã³ã³ããŒãã³ãã培åºçã«ãã¹ãããããšã¯ãé«å質ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«äžå¯æ¬ ã§ãã ãã®èšäºã§ã¯ã2ã€ã®äž»èŠãªãã¹ãæŠç¥ã§ããã¹ãããã·ã§ãããã¹ããšã€ã³ãã¬ãŒã·ã§ã³ãã¹ãã«ã€ããŠæãäžããReactã³ã³ããŒãã³ããã¹ãããã¹ã¿ãŒããã®ã«åœ¹ç«ã€å®è·µçãªäŸãšãã¹ããã©ã¯ãã£ã¹ãæäŸããŸãã
ãªãReactã³ã³ããŒãã³ãããã¹ãããã®ãïŒ
ã¹ãããã·ã§ãããã¹ããšã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã®è©³çްã«å ¥ãåã«ããŸãReactã³ã³ããŒãã³ãããã¹ãããããšããªãéèŠãªã®ããçè§£ããŸãããã
- ååž°ã®é²æ¢ïŒ ãã¹ãã¯ãã³ã³ããŒãã³ãã®åäœã«äºæããªã倿Žããªããæ€åºããååž°ãã³ãŒãããŒã¹ã«å¿ã³èŸŒãã®ãé²ãããšãã§ããŸãã
- ã³ãŒãå質ã®åäžïŒ ãã¹ããäœæãããšãã³ã³ããŒãã³ãã®èšèšãšæ§é ã«ã€ããŠèããããã«ãªããããã¯ãªãŒã³ã§ä¿å®æ§ã®é«ãã³ãŒãã«ã€ãªãããŸãã
- èªä¿¡ã®åäžïŒ å æ¬çãªãã¹ãã¹ã€ãŒããããã°ãã³ãŒãã倿Žããéã«èªä¿¡ãåŸãããäœããå£ããå Žåã«ã¢ã©ãŒããå±ãããšãç¥ã£ãŠããŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®ä¿é²ïŒ ãã¹ãã¯ã³ã³ããŒãã³ãã®ããã¥ã¡ã³ããšããŠãæ©èœããä»ã®éçºè ãã³ãŒããçè§£ããæäœãããããªããŸãã
ã¹ãããã·ã§ãããã¹ã
ã¹ãããã·ã§ãããã¹ããšã¯ïŒ
ã¹ãããã·ã§ãããã¹ãã§ã¯ãReactã³ã³ããŒãã³ããã¬ã³ããªã³ã°ãããã®åºåïŒã¹ãããã·ã§ããïŒã以åã«ä¿åããã¹ãããã·ã§ãããšæ¯èŒããŸãã éããããå Žåã¯ããã¹ãã倱æããæœåšçãªåé¡ãããããšã瀺ããŸãã ã³ã³ããŒãã³ãã®åºåããåçãã«æ®ããäºæãã倿ŽãããŠããªãããšã確èªãããããªãã®ã§ãã
ã¹ãããã·ã§ãããã¹ãã¯ãUIãæå³ãã倿ŽãããŠããªãããšãæ€èšŒããã®ã«ç¹ã«åœ¹ç«ã¡ãŸãã ã¹ã¿ã€ãªã³ã°ãã¬ã€ã¢ãŠãããŸãã¯ã³ã³ããŒãã³ãã®å šäœçãªæ§é ã®å€æŽãæ€åºããããã«ãã䜿çšãããŸãã
ã¹ãããã·ã§ãããã¹ããå®è£ ããæ¹æ³
JavaScriptã®äžè¬çãªãã¹ããã¬ãŒã ã¯ãŒã¯ã§ããJestãšEnzymeïŒãŸãã¯React Testing Library - 以äžãåç §ïŒã䜿çšããŠãã¹ãããã·ã§ãããã¹ãããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããŸãã
JestãšEnzymeã®äŸïŒéæšå¥šã®éç¥ïŒïŒ
æ³šïŒ Enzymeã¯ãReact Testing Libraryã®ä»£ããã«ãå€ãã®äººã«ãã£ãŠéæšå¥šãšèŠãªãããŠããŸãã ãã®äŸã§ã¯Enzymeã®äœ¿çšæ³ã瀺ããŠããŸãããæ°ãããããžã§ã¯ãã«ã¯React Testing Libraryããå§ãããŸãã
ãŸããJestãšEnzymeãã€ã³ã¹ããŒã«ããŸãã
npm install --save-dev jest enzyme enzyme-adapter-react-16
npm install --save react-test-renderer
`react-adapter-react-16`ãReactããŒãžã§ã³ã«é©ããã¢ããã¿ãŒã«çœ®ãæããŸãã
ç°¡åãªReactã³ã³ããŒãã³ãïŒäŸïŒGreeting.jsïŒãäœæããŸãã
import React from 'react';
function Greeting({ name }) {
return <h1>Hello, {name}!</h1>;
}
export default Greeting;
次ã«ãã¹ãããã·ã§ãããã¹ãïŒäŸïŒGreeting.test.jsïŒãäœæããŸãã
import React from 'react';
import { shallow } from 'enzyme';
import Greeting from './Greeting';
describe('Greeting Component', () => {
it('renders correctly', () => {
const wrapper = shallow(<Greeting name="World" />);
expect(wrapper).toMatchSnapshot();
});
});
Jestã䜿çšããŠãã¹ããå®è¡ããŸãã
npm test
ãã¹ããåããŠå®è¡ãããšãJestã¯ãGreetingã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ãããåºåãå«ãã¹ãããã·ã§ãããã¡ã€ã«ïŒäŸïŒ__snapshots__/Greeting.test.js.snapïŒãäœæããŸãã
åŸç¶ã®ãã¹ãå®è¡ã§ã¯ãçŸåšã®åºåãä¿åãããã¹ãããã·ã§ãããšæ¯èŒãããŸãã äžèŽããå Žåããã¹ãã¯ãã¹ããŸãã ç°ãªãå Žåã¯ããã¹ãã倱æãã倿Žã確èªããŠãã¹ãããã·ã§ãããæŽæ°ããããã³ã³ããŒãã³ããä¿®æ£ããå¿ èŠããããŸãã
JestãšReact Testing Libraryã®äŸïŒ
React Testing Libraryã¯ãReactã³ã³ããŒãã³ãããã¹ãããããã®ãããææ°ã§æšå¥šãããã¢ãããŒãã§ãã å®è£ ã®è©³çްã«çŠç¹ãåœãŠãã®ã§ã¯ãªãããŠãŒã¶ãŒã®èŠç¹ããã³ã³ããŒãã³ãããã¹ãããããšã«éç¹ã眮ããŠããŸãã
ãŸããJestãšReact Testing Libraryãã€ã³ã¹ããŒã«ããŸãã
npm install --save-dev @testing-library/react @testing-library/jest-dom jest
ã¹ãããã·ã§ãããã¹ãã倿ŽããŸãïŒäŸïŒGreeting.test.jsïŒã
import React from 'react';
import { render } from '@testing-library/react';
import Greeting from './Greeting';
import '@testing-library/jest-dom/extend-expect';
describe('Greeting Component', () => {
it('renders correctly', () => {
const { asFragment } = render(<Greeting name="World" />);
expect(asFragment()).toMatchSnapshot();
});
});
Jestã䜿çšããŠãã¹ããå®è¡ããŸãã
npm test
ãã¹ããåããŠå®è¡ãããšãJestã¯ãGreetingã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ãããåºåãå«ãã¹ãããã·ã§ãããã¡ã€ã«ïŒäŸïŒ__snapshots__/Greeting.test.js.snapïŒãäœæããŸãã
åŸç¶ã®ãã¹ãå®è¡ã§ã¯ãçŸåšã®åºåãä¿åãããã¹ãããã·ã§ãããšæ¯èŒãããŸãã äžèŽããå Žåããã¹ãã¯ãã¹ããŸãã ç°ãªãå Žåã¯ããã¹ãã倱æãã倿Žã確èªããŠãã¹ãããã·ã§ãããæŽæ°ããããã³ã³ããŒãã³ããä¿®æ£ããå¿ èŠããããŸãã
ã¹ãããã·ã§ãããã¹ãã®ãã¹ããã©ã¯ãã£ã¹
- ã¹ãããã·ã§ãããã³ãŒããšããŠæ±ãïŒ ä»ã®ã³ãŒããã¡ã€ã«ãšåæ§ã«ãã¹ãããã·ã§ãããã¡ã€ã«ãããŒãžã§ã³ç®¡çã·ã¹ãã ïŒGitãªã©ïŒã«ã³ãããããŸãã
- 倿Žãæ³šææ·±ã確èªããïŒ ã¹ãããã·ã§ãããã¹ãã倱æããå Žåã¯ãã¹ãããã·ã§ãããã¡ã€ã«ã®å€æŽãæ³šææ·±ã確èªããŠãæå³çãªãã®ãªã®ãããã°ã瀺ããŠããã®ãã倿ããŸãã
- ã¹ãããã·ã§ãããæå³çã«æŽæ°ããïŒ å€æŽãæå³çãªãã®ã§ããå Žåã¯ãæ°ããäºæ³ãããåºåãåæ ããããã«ã¹ãããã·ã§ãããã¡ã€ã«ãæŽæ°ããŸãã
- ã¹ãããã·ã§ããã®é床ãªäœ¿çšãé¿ããïŒ ã¹ãããã·ã§ãããã¹ãã¯ãæ¯èŒçå®å®ããUIãæã€ã³ã³ããŒãã³ãã«æé©ã§ãã é »ç¹ã«å€æŽãããã³ã³ããŒãã³ãã«äœ¿çšãããšãäžèŠãªã¹ãããã·ã§ããæŽæ°ã倿°çºçããå¯èœæ§ããããããé¿ããŠãã ããã
- å¯èªæ§ãèæ ®ããïŒ ã¹ãããã·ã§ãããã¡ã€ã«ã¯ãèªã¿ã«ããå ŽåããããŸãã Prettierãªã©ã®ããŒã«ã䜿çšããŠãã¹ãããã·ã§ãããã¡ã€ã«ãããèªã¿ãããæžåŒèšå®ããŸãã
ã¹ãããã·ã§ãããã¹ãã䜿çšããå Žå
ã¹ãããã·ã§ãããã¹ãã¯ã次ã®ã·ããªãªã§æã广çã§ãã
- ã·ã³ãã«ãªã³ã³ããŒãã³ãïŒ åºåãäºæž¬å¯èœãªã·ã³ãã«ãªã³ã³ããŒãã³ãããã¹ãããŸãã
- UIã©ã€ãã©ãªïŒ ããŸããŸãªããŒãžã§ã³ã§UIã³ã³ããŒãã³ãã®èŠèŠçãªäžè²«æ§ãæ€èšŒããŸãã
- ååž°ãã¹ãïŒ æ¢åã®ã³ã³ããŒãã³ãã§æå³ããªã倿Žãæ€åºããŸãã
ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ã
ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ããšã¯ïŒ
ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã«ã¯ãè€æ°ã®ã³ã³ããŒãã³ãã飿ºããŠç¹å®ã®æ©èœãå®è¡ããæ¹æ³ããã¹ãããããšãå«ãŸããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªéšåãæ£ããçžäºäœçšããŠãããã·ã¹ãã å šäœãæåŸ ã©ããã«åäœããããšã確èªããŸãã
åã ã®ã³ã³ããŒãã³ãã«çŠç¹ãåœãŠãåäœãã¹ããšã¯ç°ãªããã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã¯ã³ã³ããŒãã³ãéã®çžäºäœçšã«çŠç¹ãåœãŠãŠããŸãã ããã«ãããã¢ããªã±ãŒã·ã§ã³å šäœãæ£ããæ©èœããŠããããšã確èªã§ããŸãã
ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ããå®è£ ããæ¹æ³
ããã§ããJestãšReact Testing Libraryã䜿çšããŠãã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããŸãã
2ã€ã®ã³ã³ããŒãã³ãïŒInputãšDisplayïŒãæã€ã·ã³ãã«ãªã¢ããªã±ãŒã·ã§ã³ãäœæããŸãããã Inputã³ã³ããŒãã³ãã䜿çšãããšããŠãŒã¶ãŒã¯ããã¹ããå
¥åã§ããDisplayã³ã³ããŒãã³ãã¯å
¥åãããããã¹ãã衚瀺ããŸãã
ãŸããInputã³ã³ããŒãã³ããäœæããŸãïŒäŸïŒInput.jsïŒã
import React, { useState } from 'react';
function Input({ onInputChange }) {
const [text, setText] = useState('');
const handleChange = (event) => {
setText(event.target.value);
onInputChange(event.target.value);
};
return (
<input
type="text"
value={text}
onChange={handleChange}
placeholder="Enter text..."
/>
);
}
export default Input;
次ã«ãDisplayã³ã³ããŒãã³ããäœæããŸãïŒäŸïŒDisplay.jsïŒã
import React from 'react';
function Display({ text }) {
return <p>You entered: {text}</p>;
}
export default Display;
次ã«ãInputã³ã³ããŒãã³ããšDisplayã³ã³ããŒãã³ããçµ±åããã¡ã€ã³ã®Appã³ã³ããŒãã³ããäœæããŸãïŒäŸïŒApp.jsïŒã
import React, { useState } from 'react';
import Input from './Input';
import Display from './Display';
function App() {
const [inputText, setInputText] = useState('');
const handleInputChange = (text) => {
setInputText(text);
};
return (
<div>
<Input onInputChange={handleInputChange} />
<Display text={inputText} />
</div>
);
}
export default App;
ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ããäœæããŸãïŒäŸïŒApp.test.jsïŒã
import React from 'react';
import { render, screen, fireEvent } from '@testing-library/react';
import App from './App';
import '@testing-library/jest-dom/extend-expect';
describe('App Component', () => {
it('updates the display when the input changes', () => {
render(<App />);
const inputElement = screen.getByPlaceholderText('Enter text...');
const displayElement = screen.getByText('You entered: ');
fireEvent.change(inputElement, { target: { value: 'Hello, world!' } });
expect(displayElement).toHaveTextContent('You entered: Hello, world!');
});
});
Jestã䜿çšããŠãã¹ããå®è¡ããŸãã
npm test
ãã®ãã¹ãã§ã¯ããŠãŒã¶ãŒãInputã³ã³ããŒãã³ãã«ããã¹ããå
¥åããDisplayã³ã³ããŒãã³ããå
¥åãããããã¹ãã§æŽæ°ãããããšãæ€èšŒããŸãã ããã«ãããInputã³ã³ããŒãã³ããšDisplayã³ã³ããŒãã³ããæ£ããçžäºäœçšããŠããããšã確èªãããŸãã
ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã®ãã¹ããã©ã¯ãã£ã¹
- äž»èŠãªçžäºäœçšã«çŠç¹ãåœãŠãïŒ ã³ã³ããŒãã³ãéã®æãéèŠãªçžäºäœçšãç¹å®ãããããã®ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã«çŠç¹ãåœãŠãŸãã
- çŸå®çãªããŒã¿ã䜿çšããïŒ çŸå®äžçã®ã·ããªãªãã·ãã¥ã¬ãŒãããããã«ãã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã§çŸå®çãªããŒã¿ã䜿çšããŸãã
- å€éšäŸåé¢ä¿ãã¢ãã¯ããïŒ ã³ã³ããŒãã³ããåé¢ãããã¹ããããä¿¡é Œæ§ã®é«ããã®ã«ããããã«ãå€éšäŸåé¢ä¿ïŒAPIåŒã³åºããªã©ïŒãã¢ãã¯ããŸãã `msw`ïŒMock Service WorkerïŒã®ãããªã©ã€ãã©ãªã¯ããã®ç®çã®ããã«åªããŠããŸãã
- æç¢ºã§ç°¡æœãªãã¹ããäœæããïŒ çè§£ãããããä¿å®ã容æãªãæç¢ºã§ç°¡æœãªãã¹ããäœæããŸãã
- ãŠãŒã¶ãŒãããŒããã¹ãããïŒ ãŠãŒã¶ãŒã®èŠç¹ããã¢ããªã±ãŒã·ã§ã³ãæåŸ ã©ããã«åäœããããšã確èªããããã«ãå®å šãªãŠãŒã¶ãŒãããŒã®ãã¹ãã«çŠç¹ãåœãŠãŸãã
ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã䜿çšããå Žå
ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã¯ã次ã®ã·ããªãªã§æã广çã§ãã
- è€éãªã³ã³ããŒãã³ãïŒ ä»ã®ã³ã³ããŒãã³ããŸãã¯å€éšã·ã¹ãã ãšçžäºäœçšããè€éãªã³ã³ããŒãã³ãããã¹ãããŸãã
- ãŠãŒã¶ãŒãããŒïŒ å®å šãªãŠãŒã¶ãŒãããŒãæ£ããæ©èœããŠããããšã確èªããŸãã
- APIçžäºäœçšïŒ ããã³ããšã³ããšããã¯ãšã³ãAPIéã®çµ±åããã¹ãããŸãã
ã¹ãããã·ã§ãããã¹ããšã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãïŒæ¯èŒ
ã¹ãããã·ã§ãããã¹ããšã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã®äž»ãªéãããŸãšããè¡šãæ¬¡ã«ç€ºããŸãã
| æ©èœ | ã¹ãããã·ã§ãããã¹ã | ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ã |
|---|---|---|
| ç®ç | UIåºåãäºæãã倿Žãããªãããšãæ€èšŒããŸãã | ã³ã³ããŒãã³ããæ£ããçžäºäœçšããããšã確èªããŸãã |
| ã¹ã³ãŒã | åã ã®ã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ã | è€æ°ã®ã³ã³ããŒãã³ãã飿ºããŠæ©èœããŸãã |
| ãã©ãŒã«ã¹ | UIã®å€èгã | ã³ã³ããŒãã³ãã®çžäºäœçšãšæ©èœã |
| å®è£ | ã¬ã³ããªã³ã°ãããåºåãä¿åãããã¹ãããã·ã§ãããšæ¯èŒããŸãã | ãŠãŒã¶ãŒã®çžäºäœçšãã·ãã¥ã¬ãŒãããæåŸ ãããåäœãæ€èšŒããŸãã |
| ãŠãŒã¹ã±ãŒã¹ | ã·ã³ãã«ãªã³ã³ããŒãã³ããUIã©ã€ãã©ãªãååž°ãã¹ãã | è€éãªã³ã³ããŒãã³ãããŠãŒã¶ãŒãããŒãAPIã®çžäºäœçšã |
| ã¡ã³ããã³ã¹ | UIã«å€æŽãããå Žåã¯ãã¹ãããã·ã§ããã®æŽæ°ãå¿ èŠã§ãã | ã³ã³ããŒãã³ãã®çžäºäœçšãŸãã¯æ©èœã倿Žãããå Žåã¯ãæŽæ°ãå¿ èŠã§ãã |
é©åãªãã¹ãæŠç¥ã®éžæ
æé©ãªãã¹ãæŠç¥ã¯ããããžã§ã¯ãã®å ·äœçãªããŒãºã«ãã£ãŠç°ãªããŸãã äžè¬çã«ãReactã³ã³ããŒãã³ããæ£ããæ©èœããŠããããšã確èªããããã«ãã¹ãããã·ã§ãããã¹ããšã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã®äž¡æ¹ãçµã¿åãããã®ãããã§ãããã
- åäœãã¹ãããå§ããïŒ ã¹ãããã·ã§ãããŸãã¯ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã«å ¥ãåã«ãåã ã®ã³ã³ããŒãã³ãã«å¯ŸããŠåªããåäœãã¹ããããããšã確èªããŠãã ããã
- UIã³ã³ããŒãã³ãã«ã¹ãããã·ã§ãããã¹ãã䜿çšããïŒ ã¹ãããã·ã§ãããã¹ãã䜿çšããŠãUIã³ã³ããŒãã³ãã®èŠèŠçãªäžè²«æ§ãæ€èšŒããŸãã
- è€éãªçžäºäœçšã«ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã䜿çšããïŒ ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã䜿çšããŠãã³ã³ããŒãã³ããæ£ããçžäºäœçšããŠãããã¢ããªã±ãŒã·ã§ã³ãæåŸ ã©ããã«åäœããŠããããšãæ€èšŒããŸãã
- ãšã³ãããŒãšã³ãïŒE2EïŒãã¹ããæ€èšããïŒ éèŠãªãŠãŒã¶ãŒãããŒã®å Žåã¯ãCypressãPlaywrightãªã©ã®ããŒã«ã䜿çšããŠãšã³ãããŒãšã³ããã¹ãã远å ããŠãå®éã®ãŠãŒã¶ãŒã®çžäºäœçšãã·ãã¥ã¬ãŒãããã¢ããªã±ãŒã·ã§ã³å šäœã®åäœãæ€èšŒããããšãæ€èšããŠãã ããã
ã¹ãããã·ã§ãããã¹ããšã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ããè¶ ããŠ
ã¹ãããã·ã§ãããã¹ããšã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã¯äžå¯æ¬ ã§ãããReactã³ã³ããŒãã³ãã§èæ ®ãã¹ããã¹ãã®çš®é¡ã¯ããã ãã§ã¯ãããŸããã ããã«ãèŠããŠããã¹ãä»ã®ããã€ãã®ãã¹ãæŠç¥ããããŸãã
- åäœãã¹ãïŒ åè¿°ã®ããã«ãåäœãã¹ãã¯ãåã ã®ã³ã³ããŒãã³ããåé¢ããŠãã¹ãããããã«äžå¯æ¬ ã§ãã
- ãšã³ãããŒãšã³ãïŒE2EïŒãã¹ãïŒ E2Eãã¹ãã¯ãå®éã®ãŠãŒã¶ãŒã®çžäºäœçšãã·ãã¥ã¬ãŒãããã¢ããªã±ãŒã·ã§ã³å šäœã®åäœãæ€èšŒããŸãã
- ããããã£ããŒã¹ãã¹ãïŒ ããããã£ããŒã¹ãã¹ãã«ã¯ãã³ã³ããŒãã³ãã«å¯ŸããŠåžžã«çã§ããå¿ èŠãããããããã£ãå®çŸ©ãããããã®ããããã£ããã¹ãããããã«ã©ã³ãã ãªå ¥åãçæããããšãå«ãŸããŸãã
- ã¢ã¯ã»ã·ããªãã£ãã¹ãïŒ ã¢ã¯ã»ã·ããªãã£ãã¹ãã¯ãã³ã³ããŒãã³ããé害ã®ãããŠãŒã¶ãŒã«ãšã£ãŠã¢ã¯ã»ã¹å¯èœã§ããããšã確èªããŸãã
çµè«
ãã¹ãã¯ãå ç¢ã§ä¿¡é Œæ§ã®é«ãReactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®äžå¯æ¬ ãªéšåã§ãã ã¹ãããã·ã§ãããšã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã®ãã¯ããã¯ãç¿åŸããããšã§ãã³ãŒãã®å質ãå€§å¹ ã«åäžãããååž°ãé²ãã倿Žã«å¯Ÿããèªä¿¡ãé«ããããšãã§ããŸãã åã³ã³ããŒãã³ãã«é©åãªãã¹ãæŠç¥ãéžæããããŸããŸãªã¿ã€ãã®ãã¹ããçµã¿åãããŠå æ¬çãªã«ãã¬ããžã確ä¿ããããšãå¿ããªãã§ãã ããã JestãReact Testing Libraryãããã³å¯èœæ§ãšããŠMock Service WorkerïŒMSWïŒãªã©ã®ããŒã«ãçµã¿èŸŒããšããã¹ãã¯ãŒã¯ãããŒãå¹çåãããŸãã åžžã«ããŠãŒã¶ãŒã®ãšã¯ã¹ããªãšã³ã¹ãåæ ãããã¹ãã®äœæãåªå ããŸãã ãã¹ãã®æåãåãå ¥ããããšã§ãã°ããŒãã«ãªèŠèŽè ã«åªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããé«å質ã®Reactã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã